//将一句话的单词位置倒置，标点符号不倒置。如输入 I like Beijing. 输出 Beijing. like I
#include <stdio.h>
#include <string.h>
void change(char* arr,int x,int y)
{   
    char tmp=0;
    tmp = arr[x];
    arr[x] = arr[y];
    arr[y] = tmp;
}

void daozhi(char* arr)
{
    int len=strlen(arr);
    int j=0,i=0,count=0,t=len-1;
    char * end=arr + len-1;

    for(i=0;i<(len-1)/2;i++,t--)
    {
    change(arr,i,t);
    }//字符串全倒置一遍

    for(i=0;i<len+1;i++)//将\0也包括进去
    {
        if(arr[i]==' '||i==len)//如果遇到空格或者\0，则将该段内的字符再次倒置，得到单词正序
        {
            for(j=i-1;j>count;j--,count++)
                {
                    change(arr,j,count);
                }
        }
        if(arr[i]==' ')
        {
            count=i+1;//记录上一个空格位置并+1为下一个单词倒置的起始位
        }
    }
}
int main()
{
    char arr[]="I like Beijing.";
    char *str=arr;
    daozhi(arr);
    printf("%s\n",arr);
    return 0;
}
